<?php
//ok los estados de las salidas pueden ser
//0:creada
//1:cerrada en plazo
//2:cerrada fuera de plazo
//3:cancelada

require($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-blog-header.php' );

class fecha_min_max
{
	var $fecha_min;
	var $fecha_max;
};

function getFilterDates($data)
{
	global $wpdb;
	$ret = new fecha_min_max;
		
	$use_filter_dates	= ($data['filtermindate'] != null && $data['filtermaxdate'] != null);
	$use_event_dates	= ($data['eventmindate'] != null && $data['eventmaxdate'] != null);
		
	//obtener fechas de eventos
	$ret->fecha_min = array('value' => date("d/m/Y"));
	$ret->fecha_max = array('value' => date("d/m/Y"));
			
	$also_closed = ($data['showclose']!=null);
		
	if(!$use_filter_dates && !$use_event_dates)
	{
		$query	= "SELECT DATE_FORMAT(min(`fecha_salida`),'%d/%m/%Y') as fecha_salida,DATE_FORMAT(max(`fecha_llegada`),'%d/%m/%Y') as fecha_llegada FROM `cau_event`";
		if(!$also_closed)
		{
			$query.=" WHERE estado=0";
		}
		
		$fechas = $wpdb->get_results($query);
		
		if($wpdb->num_rows>0)
		{
			$ret->fecha_min = array('value' => $fechas[0]->fecha_salida);
			$ret->fecha_max = array('value' => $fechas[0]->fecha_llegada);
		}		
	}
	else if($use_filter_dates && $use_event_dates)
	{
		$fecha_min_filtro = date_create_from_format('j/n/Y',$data['filtermindate']);
		$fecha_max_filtro = date_create_from_format('j/n/Y',$data['filtermaxdate']);
		$fecha_min_evento = date_create_from_format('j/n/Y',$data['eventmindate']);		
		$fecha_max_evento = date_create_from_format('j/n/Y',$data['eventmaxdate']);
		
		$ret->fecha_min = array('value' => ($fecha_min_filtro<$fecha_min_evento)?$data['filtermindate']:$data['eventmindate']);
		$ret->fecha_max = array('value' => ($fecha_max_filtro>$fecha_max_evento)?$data['filtermaxdate']:$data['eventmaxdate']);	
	}
	else if($use_filter_dates)
	{
		$ret->fecha_min = array('value' => $data['filtermindate']);
		$ret->fecha_max = array('value' => $data['filtermaxdate']);
	}
	
	return $ret;	
}

function getDefaultEventsFormData($data=null)
{
	global $wpdb;
	
	$filter = getfilterDates($data);
			
	?>
	<table>
		<tr>
			<td style="width: 20px">
			<?php
				cau_show_button('event-nuevo','Nuevo Evento','OnNuevoEvento()');
			?>
			</td>
		</tr>
		<tr>
			<td style="width: 50%">Entre: 
				<?php
					cau_show_date_picker("filter_event_date1_DD/MM/YYYY",$filter->fecha_min);
				?>
			</td>
			<td style="width: 50%">Hasta: 
				<?php
					cau_show_date_picker("filter_event_date2_DD/MM/YYYY",$filter->fecha_max);
				?>
			</td>
		</tr>
	</table>
	<br>
	<div id="eventos-listado">
	<?php
	getListadoEventos($data);
	?>
	</div>	
	<?php
}

function getNewEventFormData($data=null)
{
	global $wpdb;
	$tomorrow = date('d/m/Y',mktime(0,0,0,date('m'), date('d')+1, date('Y')));
	$datepickeratts = array('value' => $tomorrow, 'datepicker_min' => $tomorrow);
	
	$query = "SELECT COUNT(*) FROM `cau_lugares` WHERE bloqueado=0";
	$noplaces = ($wpdb->get_var($query)==0);
	if($noplaces)
	{
		?>
		no hay <a href="lugares">lugares</a> en los cuales hacer eventos
		<?php return;
	}
	?>
	
	<table>
		<tr>
			<td style="width: 100px">
			Lugar
			</td>
			<td>
				<?php
				$lugares = getListadoLugares();
				cau_show_places($lugares);
				?>
			</td>			
		</tr>
		<tr>
			<td style="width: 100px">
			Fecha Inicio
			</td>
			<td>
				<?php
				cau_show_date_picker("new_event_date1_DD/MM/YYYY",$datepickeratts);
				?>			
			</td>			
		</tr>
		<tr>
			<td style="width: 100px">
			Fecha Termino
			</td>
			<td>
				<?php
				cau_show_date_picker("new_event_date2_DD/MM/YYYY",$datepickeratts);
				?>			
			</td>			
		</tr>	
	</table>
	
	<?php
	cau_show_button('event-crear-nuevo'		,'Crear Evento'	,'OnCrearEvento()'		);
	cau_show_button('event-cancelar-nuevo'	,'Cancelar'		,'OnCancelarCreacion()'	);
}

function canCreateEvent($data)
{
	return true;
}

function createEvent($data)
{
	global $current_user;
	global $wpdb;
	
	$id_lugar		= $data['id'];	
	$fecha_salida	= $data['fechainicio'];
	$fecha_llegada	= $data['fechatermino'];
	$id_creador		= $current_user->ID;
	$estado			= 0;
	
	$query = "INSERT INTO `cau_event` (`id_lugar`,`fecha_salida`,`fecha_llegada`,`id_creador`,`estado`) VALUES(".$id_lugar.",";
	$query.="STR_TO_DATE('".$fecha_salida."','%d/%m/%Y'),";
	$query.="STR_TO_DATE('".$fecha_llegada."','%d/%m/%Y'),";
	$query.=$id_creador.",0)";
	
	if($wpdb->query($query)==false)
	{
		getDefaultError("no se pudo crear el evento");
	}
	else
	{
		getDefaultError("evento creado correctamente"); //<-mentira, no es un error. pero lo reseteamos de todas maneras
	}
}

function joinEvent($data)
{
	global $current_user;
	global $wpdb;
	
	$id_evento		= $data['id'];
	$id_usuario		= $current_user->ID;
	
	$query = "SELECT id_user FROM cau_event_participants WHERE id_user=".$id_usuario." AND id_evento=".$id_evento;
	$eventos = $wpdb->get_results($query);
	
	if($wpdb->num_rows>0)
		return false;	
		
	return $wpdb->insert( 'cau_event_participants', array( 'id_evento' => $id_evento , 'id_user' => $id_usuario ), array('%d','%d'));
}

function leaveEvent($data)
{
	global $current_user;
	global $wpdb;
	
	$id_evento		= $data['id'];
	$id_usuario		= $current_user->ID;
	
	$query = "DELETE FROM cau_event_participants WHERE id_user=".$id_usuario." AND id_evento=".$id_evento." LIMIT 1";
	$wpdb->get_results($query);
	return true;
}

function closeEvent($data)
{
	global $current_user;
	global $wpdb;
	
	$id_evento		= $data['id'];
	$id_usuario		= $current_user->ID;
	
	$query = "SELECT cau_event.id_creador,cau_event.estado FROM cau_event WHERE id_creador=".$id_usuario." AND id_evento=".$id_evento;
	$event = $wpdb->get_results($query);
	if($wpdb->num_rows<=0)
		return false;	
		
	if(!EventoEsEditable($event) || ($event->estado != 0))
		return false;
	
	return $wpdb->update( 'cau_event', //tabla
					array( 'estado' => 1 ), //valor a actualizar
					array( 'id_evento' => $id_evento ), //where
					array( '%d' ),  //formato datos
					array( '%d' ) //formato where
				);
}

function cancelEvent($data)
{
	global $current_user;
	global $wpdb;
	
	$id_evento		= $data['id'];
	$id_usuario		= $current_user->ID;
	
	$query = "SELECT cau_event.id_creador,cau_event.estado FROM cau_event WHERE id_evento=".$id_evento;
	$event = $wpdb->get_results($query);
	if($wpdb->num_rows<=0)
		return false;	
		
	if(!EventoEsEditable($event) || ($event->estado != 0))
		return false;	
	
	$query = "DELETE FROM cau_event WHERE id_evento=".$id_evento." LIMIT 1";
	$wpdb->get_results($query);
	return true;
}

function updateEventDates($data)
{					
	global $current_user;
	global $wpdb;
	
	$id_evento		= $data['id'];
	$fecha_salida	= $data['eventmindate'];
	$fecha_llegada	= $data['eventmaxdate'];
	
	$query = "UPDATE `cau_event` SET `fecha_salida` = DATE_FORMAT(STR_TO_DATE('".$fecha_salida."','%d/%m/%Y'),'%Y-%m-%d'),`fecha_llegada` = DATE_FORMAT(STR_TO_DATE('".$fecha_llegada."','%d/%m/%Y'),'%Y-%m-%d') WHERE `cau_event`.`id_evento` =".$id_evento;
	$wpdb->query($query);
}

function getListadoEventos($data=null)
{
	global $wpdb;
	
	$filter = getFilterDates($data);
	
	//query conchadesumadre complicado!
	$query = "SELECT DISTINCT cau_event.id_evento, cau_lugares.locacion, cau_event.fecha_salida, cau_event.fecha_llegada, cau_event.id_creador, cau_event.estado FROM cau_event";
	$query.= " JOIN cau_lugares ON cau_lugares.id = cau_event.id_lugar";
	$query.=" and (cau_event.fecha_salida BETWEEN STR_TO_DATE('".$filter->fecha_min['value']."','%d/%m/%Y') and STR_TO_DATE('".$filter->fecha_max['value']."','%d/%m/%Y')";
	$query.=" or cau_event.fecha_llegada BETWEEN STR_TO_DATE('".$filter->fecha_min['value']."','%d/%m/%Y') and STR_TO_DATE('".$filter->fecha_max['value']."','%d/%m/%Y'))";	
	$query.=" ORDER BY cau_event.fecha_salida";
	
	$eventos = $wpdb->get_results($query);
	
	if($wpdb->num_rows<=0)
		return;
	
	$event_edit_id = -1;
	
	if(!strcmp($data['action'],'editevent') && $data['id'])
	{
		$event_edit_id = $data['id'];
	}
	
	?>
	<table style="
	border-width: 0px;
	border-spacing: 0px;
	border-style: outset;
	border-color: black;
	border-collapse: collapse;
	background-color: white;	
	">
	<?php
	foreach($eventos as $event)
	{
		cau_show_event_table_info($event,$event->id_evento == $event_edit_id);
	}

	?>
	</table>
	<?php
}

?>